查看原文
其他

更多特征变量却未能带来随机森林分类效果的提升

生信宝典 生信宝典 2022-07-05

评估RFE变量筛选过程中构建的最终模型的效果

最终拟合的模型可通过rfe$fit获取,用于后续预测分析。

library(randomForest)
rfe$fit
##
## Call:
## randomForest(x = x, y = y, importance = TRUE)
## Type of random forest: classification
## Number of trees: 500
## No. of variables tried at each split: 14
##
## OOB estimate of error rate: 5.08%
## Confusion matrix:
## DLBCL FL class.error
## DLBCL 43 1 0.02272727
## FL 2 13 0.13333333

但此模型没有进行调参。虽然用的变量多了,但预测效果没有比Boruta筛选的特征变量结果好。P-Value [Acc > NIR] : 0.2022不显著。

# 获得模型结果评估矩阵(`confusion matrix`)

predictions <- predict(rfe$fit, newdata=test_data)
confusionMatrix(predictions, test_data_group)
## Confusion Matrix and Statistics
##
## Reference
## Prediction DLBCL FL
## DLBCL 14 2
## FL 0 2
##
## Accuracy : 0.8889
## 95% CI : (0.6529, 0.9862)
## No Information Rate : 0.7778
## P-Value [Acc > NIR] : 0.2022
##
## Kappa : 0.6087
##
## Mcnemar's Test P-Value : 0.4795
##
## Sensitivity : 1.0000
## Specificity : 0.5000
## Pos Pred Value : 0.8750
## Neg Pred Value : 1.0000
## Prevalence : 0.7778
## Detection Rate : 0.7778
## Detection Prevalence : 0.8889
## Balanced Accuracy : 0.7500
##
## 'Positive' Class : DLBCL
##

基于RFE选择的特征变量再次调参构建模型

# 提取训练集的特征变量子集
rfe_train_data <- train_data[, caretRfe_variables$Item]
rfe_mtry <- generateTestVariableSet(length(caretRfe_variables$Item))

使用 Caret 进行调参和建模

library(caret)
# Create model with default parameters
trControl <- trainControl(method="repeatedcv", number=10, repeats=5)

# train model
if(file.exists('rda/rfeVariable_rf_default.rda')){
rfeVariable_rf_default <- readRDS("rda/rfeVariable_rf_default.rda")
} else {
# 设置随机数种子,使得结果可重复
seed <- 1
set.seed(seed)
# 根据经验或感觉设置一些待查询的参数和参数值
tuneGrid <- expand.grid(mtry=rfe_mtry)

rfeVariable_rf_default <- train(x=rfe_train_data, y=train_data_group, method="rf",
tuneGrid = tuneGrid, #
metric="Accuracy", #metric='Kappa'
trControl=trControl)
saveRDS(rfeVariable_rf_default, "rda/rfeVariable_rf_default.rda")
}
print(rfeVariable_rf_default)
## Random Forest
##
## 59 samples
## 216 predictors
## 2 classes: 'DLBCL', 'FL'
##
## No pre-processing
## Resampling: Cross-Validated (10 fold, repeated 5 times)
## Summary of sample sizes: 53, 53, 54, 53, 53, 54, ...
## Resampling results across tuning parameters:
##
## mtry Accuracy Kappa
## 1 0.9802857 0.9459213
## 2 0.9707619 0.9091146
## 3 0.9600952 0.8725321
## 4 0.9554286 0.8405432
## 5 0.9599048 0.8612016
## 6 0.9525714 0.8326301
## 7 0.9572381 0.8642968
## 8 0.9492381 0.8242968
## 9 0.9492381 0.8242968
## 10 0.9492381 0.8242968
## 16 0.9492381 0.8242968
## 25 0.9492381 0.8242968
## 27 0.9463810 0.8160615
## 36 0.9492381 0.8242968
## 49 0.9492381 0.8242968
## 64 0.9425714 0.8042968
## 81 0.9363810 0.7874901
## 100 0.9397143 0.7960615
## 125 0.9311429 0.7713556
##
## Accuracy was used to select the optimal model using the largest value.
## The final value used for the model was mtry = 1.

结果还是不显著P-Value [Acc > NIR]>0.05。效果弱于Boruta筛选出的特征变量构建的模型。

# 获得模型结果评估矩阵(`confusion matrix`)

predictions <- predict(rfeVariable_rf_default, newdata=test_data)
confusionMatrix(predictions, test_data_group)
## Confusion Matrix and Statistics
##
## Reference
## Prediction DLBCL FL
## DLBCL 14 2
## FL 0 2
##
## Accuracy : 0.8889
## 95% CI : (0.6529, 0.9862)
## No Information Rate : 0.7778
## P-Value [Acc > NIR] : 0.2022
##
## Kappa : 0.6087
##
## Mcnemar's Test P-Value : 0.4795
##
## Sensitivity : 1.0000
## Specificity : 0.5000
## Pos Pred Value : 0.8750
## Neg Pred Value : 1.0000
## Prevalence : 0.7778
## Detection Rate : 0.7778
## Detection Prevalence : 0.8889
## Balanced Accuracy : 0.7500
##
## 'Positive' Class : DLBCL
##

机器学习系列教程


从随机森林开始,一步步理解决策树、随机森林、ROC/AUC、数据集、交叉验证的概念和实践。


文字能说清的用文字、图片能展示的用、描述不清的用公式、公式还不清楚的写个简单代码,一步步理清各个环节和概念。


再到成熟代码应用、模型调参、模型比较、模型评估,学习整个机器学习需要用到的知识和技能。

  1. 机器学习算法 - 随机森林之决策树初探(1)

  2. 机器学习算法-随机森林之决策树R 代码从头暴力实现(2)

  3. 机器学习算法-随机森林之决策树R 代码从头暴力实现(3)

  4. 机器学习算法-随机森林之理论概述

  5. 随机森林拖了这么久,终于到实战了。先分享很多套用于机器学习的多种癌症表达数据集 https://file.biolab.si/biolab/supp/bi-cancer/projections/。

  6. 机器学习算法-随机森林初探(1)

  7. 机器学习 模型评估指标 - ROC曲线和AUC值

  8. 机器学习 - 训练集、验证集、测试集

  9. 机器学习 - 随机森林手动10 折交叉验证

  10. 一个函数统一238个机器学习R包,这也太赞了吧

  11. 基于Caret和RandomForest包进行随机森林分析的一般步骤 (1)

  12. Caret模型训练和调参更多参数解读(2)

  13. 机器学习相关书籍分享

  14. 基于Caret进行随机森林随机调参的4种方式

  15. 送你一个在线机器学习网站,真香!

  16. UCI机器学习数据集

  17. 机器学习第17篇 - 特征变量筛选(1)

  18. 机器学习第18篇 - 基于随机森林的Boruta特征变量筛选(2)

  19. 机器学习系列补充:数据集准备和更正YSX包

  20. 机器学习第20篇 - 基于Boruta选择的特征变量构建随机森林

  21.  机器学习第21篇 - 特征递归消除RFE算法 理论

  22. RFE筛选出的特征变量竟然是Boruta的4倍之多


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存